/**
 * @file replace.h
 * Funções para substituir substrings.
 */

#ifndef REPLACE_H_
#define REPLACE_H_


/**
 * Passa todo o conteúdo de uma arquivo para uma string.
 *
 * Aloca uma nova string com tamanho suficiente para caber todo o conteúdo do
 * arquivo. Depois lê todo o arquivo copiando o arquivo para a string. O
 * arquivo deve estar aberto em modo leitura.
 * @param file O arquivo a ser copiado
 * @return A nova string com o conteúdo do arquivo
 */
char *file2string(FILE *file);


/**
 * Troca uma ocorrência de uma substring por outra.
 *
 * Percorre a string before, substitui a primeira ocorrência da substring old
 * pela string new e devolve isso em uma nova string. Note que a nova string
 * será alocada dinâmicamente, devendo ser desalocada manualmente.
 * @param before A string com o texto original
 * @param old A substring que será substituída
 * @param new A substring que irá substituir
 * @return Uma nova string com o texto original modificado
 */
char *strrep(const char *before, const char *old, const char *new);


/**
 * Substitui as primeiras ocorrências de várias strings dentro de um arquivo por
 * outras.
 *
 * Percorre o arquivo input substituindo a primeira ocorrência de cada string de
 * olds pela string de mesmo índice em news. Escreve o resultado no arquivo
 * output.
 * Os arquivos input e output devem estar aberto para leitura e escrita,
 * respectivamente, e com seu ponteiro de arquivo apontado para o seu início.
 * @param input O arquivo de entrada
 * @param output O arquivo de saída
 * @param size O tamanho dos arrays news e olds
 * @param olds Array com as strings a serem substituídas
 * @param news Array com as strings que substituirão as antigas
 */
void frep(FILE *input, FILE *output, int size, char **olds, char **news);


#endif /* REPLACE_H_ */
